const Timestamp = new Date().getTime()
const CompressionPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css', 'html']

module.exports = {
  //路径前缀
  publicPath: '/',
  outputDir: '/Users/yaochaowen/Desktop/html',
  lintOnSave: true,
  productionSourceMap: false,
  configureWebpack: {
    output: {
      filename: `js/[name].${Timestamp}.js`,
      chunkFilename: `js/chunk.[name].${Timestamp}.js`
    },
    plugins: [
      new CompressionPlugin({
        algorithm: 'gzip', // 使用gzip压缩
        test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), // 匹配文件名
        //   filename: "[path].gz[query]", // 压缩后的文件名(保持原文件名，后缀加.gz)
        minRatio: 0.8, // 压缩率小于1才会压缩
        threshold: 1024, // 对超过1k的数据压缩
        deleteOriginalAssets: false // 是否删除未压缩的源文件，谨慎设置，如果希望提供非gzip的资源，可不设置或者设置为false（比如删除打包后的gz后还可以加载到原始资源文件）
      })
    ]
  },
  css: {
    extract: {
      filename: `css/[name].${Timestamp}.css`,
      chunkFilename: `css/chunk.[name].${Timestamp}.css`
    }
  },
  chainWebpack: (config) => {
    //忽略的打包文件
    config.externals({
      vue: 'Vue',
      'vue-router': 'VueRouter',
      vuex: 'Vuex',
      axios: 'axios',
      'element-ui': 'ELEMENT'
    })

    const entry = config.entry('app')
    entry.add('babel-polyfill').end()
    entry.add('classlist-polyfill').end()
  },
  devServer: {
    proxy: {
      '/webapi': {
        target: 'https://www.xinyuxuapp.com/',
        ws: true,
        pathRewrite: {
          '^/webapi': '/webapi'
        }
      }
    }
  }
}
